#!/bin/env ruby

require "./Equipement.rb"
require "./Potion.rb"
require "./Nourriture.rb"

##
#=Classe Inventaire
#La classe Inventaire gère l'inventaire du Heros et les objets qu'il contient .
#
#=Attributs :
#[@nbEmplacementElt] Représente le nombre d'emplacement d'élément disponible
#[@nbEmplacementEqt] Représente le nombre d'emplacement d'équipement disponible
#[@listeElt] Liste contenant tous les éléments non équipement qu'il y a dans l'Inventaire
#[@listeEqt] Liste contenant tous les équipements présents dans l'inventaire du Heros 
#
class Inventaire

	@nbEmplacementElt
	@nbEmplacementEqt
	@listeElt
	@listeEqt
	
	private_class_method :new
	
	#Methode de creation
	def Inventaire.nouveau()
		new(50,8)
	end
	
	#Methode d'initialisation
	def initialize(emplacementElt,emplacementEqt)
		@nbEmplacementElt,@nbEmplacementEqt,@listeElt,@listeEqt=emplacementElt,emplacementEqt,[],[]
	end

	#accesseurs
    #Retourne @nbEmplacementElt
	def getNbEmplacementElt()
		return @nbEmplacementElt
	end
	
    #Retourne @nbEmplacementEqt
	def getNbEmplacementEqt()
		return @nbEmplacementEqt
	end
	
    #Retourne @listeElt
	def getListeElt()
		return @listeElt
	end
	
    #Retourne @listeEqt
	def getListeEqt()
		return @listeEqt
	end
	
    # Affecte la variable @nbEmplacementElt avec la valeur entrée en paramètre.
	def setNbEmplacementElt(valeur)
		@nbEmplacementElt=valeur
	end
	
    #Affecte la variable @listeEqt avec la liste entrée en paramètre.
	def setNbEmplacementEqt(valeur)
		@nbEmplacementEqt=valeur
	end
	
    #Affecte la variable @listeElt avec la liste entrée en paramètre.
	def setListeElt(liste)
		@listeElt=liste
	end
	
    #Affecte la variable @listeEqt avec la liste entrée en paramètre.
	def setListeEqt(liste)
		@listeEqt=liste
	end

    #ajoute un objet dans la liste des elements
    def ajouterElt(elt)
        @listeElt << elt
    end
    
    #ajoute un Equipement dans la liste des equipements
    def ajouterEqt(eqt)
        @listeEqt[$indexType[eqt.getType()]] = eqt
    end
	
	#renvoie la position du premier Objet dans une liste correspondant a l'Objet en parametre 
	def index_obj(objet)
		@listeElt.length.times do |i|    
    			if(@listeElt[i]==objet)
    				return i;
    			end
		end
	end
	
	#retire un Objet d'une liste
	def retirerElt(objet)
		index=index_obj(objet)
		return @listeElt.delete_at(index)
	end
	
	#retire un Equipement de la liste correspondante
	def retirerEqt(objet)
		return @listeEqt.delete(objet)
	end
	
	#methode d'affichage
	def to_s
		truc=""
		@listeEqt.each do |t|
		    truc+=t.to_s+"\n"
		end
		
		@listeElt.each do |t|
		    truc+=t.to_s+"\n"
		end
        
		return truc
	end
	
end # Marqueur de fin de classe


